<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
global $data;

class Herramientas extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //redireccion segura
        if ($this->session->userdata('access') != 'grant') {
            redirect(base_url());
        }
        global $data;
        $data['responsableNombre'] = $this->session->userdata('responsableNombre');
        $data['place'] = 'herramientas';
        $this->stats();
    }

    public function stats() {
        global $data;
        $data['acceso'] = $this->ciempies_model->lista_accesos();
        $data['tcolab'] = $this->ciempies_model->get_total('COLABORADOR');
        $data['ttutorial'] = $this->ciempies_model->get_total('TUTORIAL');
        $data['therramienta'] = $this->ciempies_model->get_total('HERRAMIENTA');
        $data['tuso_herramienta'] = $this->ciempies_model->get_total('uso_herramienta');
        $data['tvisita'] = $this->ciempies_model->get_total('visita');
    }

    public function menu($opc) {
        global $data;

        $formulario = $this->session->userdata('formulario');
        $data['titulo_es'] = $formulario['titulo_es'];
        $data['intro_es'] = $formulario['intro_es'];
        $data['desc_es'] = $formulario['desc_es'];
        $data['titulo_en'] = $formulario['titulo_en'];
        $data['intro_en'] = $formulario['intro_en'];
        $data['desc_en'] = $formulario['desc_en'];
        $data['iframe_url'] = $formulario['iframe_url'];
        $data['mensaje'] = $this->session->userdata('mensaje');

        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        switch ($opc) {
            case 'agregar':
                $this->load->view('herramientas/content_alta');
                break;
            case 'modificar':
                $this->load->view('herramientas/content_buscar');
                break;
        }
        $this->load->view('template/footer');

        # reiniciamos las variables
        $this->session->unset_userdata('formulario');
        $this->session->unset_userdata('mensaje');
    }

    public function procesar_formulario() {
        $notify_good = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> ';

        $notify_bad = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> ';

        $this->form_validation->set_rules('titulo_es', 'Descripcion es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('intro_es', 'Descripcion en', 'required|trim|xss_clean');
        $this->form_validation->set_rules('desc_es', 'Link', 'required|trim');
        $this->form_validation->set_rules('titulo_en', 'Descripcion es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('intro_en', 'Descripcion en', 'required|trim|xss_clean');
        $this->form_validation->set_rules('desc_en', 'Link', 'required|trim');
        $this->form_validation->set_rules('iframe_url', 'Link', 'required|trim');

        $this->form_validation->set_error_delimiters($notify_bad, '</div>');
        $this->form_validation->set_message('required', 'Hay campos vacios');

        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('liberarHerramienta') && $this->form_validation->run())) {

            $formulario = array(
                'titulo_es' => $this->input->post('titulo_es'),
                'intro_es' => $this->input->post('intro_es'),
                'desc_es' => $this->input->post('desc_es'),
                'titulo_en' => $this->input->post('titulo_en'),
                'intro_en' => $this->input->post('intro_en'),
                'desc_en' => $this->input->post('desc_en'),
                'iframe_url' => $this->input->post('iframe_url')
            );

            $this->session->set_userdata('formulario', $formulario);
            $this->session->set_userdata('mensaje', $this->form_validation->error('titulo_es'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('intro_es'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('desc_es'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('titulo_en'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('intro_en'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('desc_en'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('iframe_url'));

            redirect(base_url() . 'herramientas/menu/agregar');
        }
        //formulario correcto, subimos la imagen
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('imagen')) {

            $formulario = array(
                'titulo_es' => $this->input->post('titulo_es'),
                'intro_es' => $this->input->post('intro_es'),
                'desc_es' => $this->input->post('desc_es'),
                'titulo_en' => $this->input->post('titulo_en'),
                'intro_en' => $this->input->post('intro_en'),
                'desc_en' => $this->input->post('desc_en'),
                'iframe_url' => $this->input->post('iframe_url')
            );

            $errorMsj = $notify_bad . $this->upload->display_errors() . '</div>';
            $this->session->set_userdata('mensaje', $errorMsj);
            $this->session->set_userdata('formulario', $formulario);

            redirect(base_url() . 'herramientas/menu/agregar');
        }

        //la imagen se subio correctamente, procedemos con la insercion en la base
        $file_info = $this->upload->data();
        $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/herramientas/');

        //el formulario esta correcto,aterrizamos las variables
        $id = $this->session->userdata('responsableID');
        $titulo_es = $this->input->post('titulo_es');
        $intro_es = $this->input->post('intro_es');
        $desc_es = $this->input->post('desc_es');
        $titulo_en = $this->input->post('titulo_en');
        $intro_en = $this->input->post('intro_en');
        $desc_en = $this->input->post('desc_en');
        $iframe_url = $this->input->post('iframe_url');

        $herramienta = array(
            'titulo_es' => $titulo_es,
            'intro_es' => $intro_es,
            'desc_es' => $desc_es,
            'titulo_en' => $titulo_en,
            'intro_en' => $intro_en,
            'desc_en' => $desc_en,
            'iframe_url' => $iframe_url,
            'file_name' => $file_info['file_name'],
            'id' => $id
        );
        //añadimos a la base
        $this->ciempies_model->guardar_herramienta($herramienta);

        //las imagenes se subieron correctamente
        $formulario = array(
            'titulo_es' => '',
            'intro_es' => '',
            'desc_es' => '',
            'titulo_en' => '',
            'intro_en' => '',
            'desc_en' => '',
            'iframe_url' => ''
        );

        $this->session->set_userdata('mensaje', $notify_good . ' Herramienta publicada correctamente</div>');
        $this->session->set_userdata('formulario', $formulario);

        redirect(base_url() . 'herramientas/menu/agregar');
    }

    # FUNCIÓN PARA CREAR LA MINIATURA A LA MEDIDA QUE LE DIGAMOS

    public function _create_thumbnail($filename, $ratio, $destino) {
        $config['image_library'] = 'gd2';

        //CARPETA EN LA QUE ESTÁ LA IMAGEN A REDIMENSIONAR
        $config['source_image'] = 'assets/uploads/' . $filename;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = $ratio;

        //CARPETA EN LA QUE GUARDAMOS LA MINIATURA
        $config['new_image'] = $destino;
        $config['width'] = 320;
        $config['height'] = 240;
        $this->load->library('image_lib');
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        //borramos la original

        unlink($config['source_image']);
    }

    public function buscar_herramienta() {
        $p = $this->input->post('tag');
        $data['herramienta'] = $this->ciempies_model->buscar_herramienta($p);
        $this->load->view('herramientas/lista_herramientas', $data);
    }

    public function eliminar_herramienta($key) {
        $filename = $this->ciempies_model->eliminar_herramienta($key);
        unlink('assets/uploads/herramientas/' . $filename->URL);
        $this->session->set_userdata('mensaje', '<div class="error">Eliminada</div>');
        redirect(base_url() . 'herramientas/menu/modificar');
    }

    public function modificar_herramienta($id) {
        global $data;

        $data['mensaje'] = $this->session->userdata('mensaje');
        $herramienta = $this->ciempies_model->datos_herramienta($id);

        $data['id'] = $herramienta->ID;
        $data['titulo_es'] = $herramienta->TITULO_ES;
        $data['intro_es'] = $herramienta->INTRO_ES;
        $data['desc_es'] = $herramienta->DESC_ES;
        $data['titulo_en'] = $herramienta->TITULO_EN;
        $data['intro_en'] = $herramienta->INTRO_EN;
        $data['desc_en'] = $herramienta->DESC_EN;
        $data['iframe_url'] = $herramienta->IFRAME_URL;
        $data['url'] = $herramienta->URL;


        //carga de vistas
        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        $this->load->view('herramientas/content_edita');
        $this->load->view('template/footer');

        //reiniciamos las variables 
        $this->session->unset_userdata('mensaje');
    }

    function actualizar_herramienta() {
        $notify_good = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> ';

        $notify_bad = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> ';

        $this->form_validation->set_rules('titulo_es', 'Descripcion es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('intro_es', 'Descripcion en', 'required|trim|xss_clean');
        $this->form_validation->set_rules('desc_es', 'Link', 'required|trim');
        $this->form_validation->set_rules('titulo_en', 'Descripcion es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('intro_en', 'Descripcion en', 'required|trim|xss_clean');
        $this->form_validation->set_rules('desc_en', 'Link', 'required|trim');
        $this->form_validation->set_rules('iframe_url', 'Link', 'required|trim');

        $this->form_validation->set_error_delimiters($notify_bad, '</div>');
        $this->form_validation->set_message('required', 'Hay campos vacios');

        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('actualizar_herramienta') && $this->form_validation->run())) {

            $this->session->set_userdata('mensaje', $notify_bad . ' Cambios descartados por error en formulario</div>');
            redirect(base_url() . 'herramientas/modificar_herramienta/' . $this->input->post('id'));
        }
        //formulario correcto, subimos la imagen
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('imagen')) {

            $herramienta = array(
                'titulo_es' => $this->input->post('titulo_es'),
                'intro_es' => $this->input->post('intro_es'),
                'desc_es' => $this->input->post('desc_es'),
                'titulo_en' => $this->input->post('titulo_en'),
                'intro_en' => $this->input->post('intro_en'),
                'desc_en' => $this->input->post('desc_en'),
                'iframe_url' => $this->input->post('iframe_url'),
                'url' => $this->input->post('url'),
                'id' => $this->input->post('id')
            );

            # la imagen no se actualizo
            if ($this->upload->display_errors() == '<p>You did not select a file to upload.</p>') {
                //la iamgen no cambio, se actualizan los campos con los nuevos datos
                $this->ciempies_model->actualizar_herramienta($herramienta);

                $this->session->set_userdata('mensaje', $notify_good . ' Cambios guardados </div>');
                redirect(base_url() . 'herramientas/modificar_herramienta/' . $this->input->post('id'));
            }

            $errorMsj = $notify_bad . $this->upload->display_errors() . '</div>';
            $this->session->set_userdata('mensaje', $errorMsj);
            redirect(base_url() . 'herramientas/modificar_herramienta/' . $this->input->post('id'));
        }

        //la imagen se subio correctamente, procedemos con la insercion en la base
        $file_info = $this->upload->data();
        $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/herramientas/');

        //el formulario esta correcto,aterrizamos las variables
        $herramienta = array(
            'titulo_es' => $this->input->post('titulo_es'),
            'intro_es' => $this->input->post('intro_es'),
            'desc_es' => $this->input->post('desc_es'),
            'titulo_en' => $this->input->post('titulo_en'),
            'intro_en' => $this->input->post('intro_en'),
            'desc_en' => $this->input->post('desc_en'),
            'iframe_url' => $this->input->post('iframe_url'),
            'url' => $file_info['file_name'],
            'id' => $this->input->post('id')
        );
        # actualizamos en la base
        $this->ciempies_model->actualizar_herramienta($herramienta);
        //eliminamos imagen pasada
        unlink('assets/uploads/herramientas/' . $this->input->post('url'));

        $this->session->set_userdata('mensaje', $notify_good . ' Herramienta actualizada correctamente</div>');
        redirect(base_url() . 'herramientas/modificar_herramienta/' . $this->input->post('id'));
    }

}
